Conventionally, with the AVC (Advanced Video Coding) image encoding format, CABAC (Context-based Adaptive Binary Arithmetic Coding) and CAVLC (Context-based Adaptive Variable Length Coding) have been defined as entropy encoding. Of these, CABAC is a binary arithmetic encoding format which performs encoding adaptively in accordance with surrounding situations (context (Context)).
With arithmetic encoding, processing is repeated in which a numeric section is divided in accordance with occurrence probability for each single symbol, thereby obtaining a code string. That is to say, there is the need to sequentially process all symbols, and since parallel processing has been difficult, making the processing high-speed has been difficult.
Accordingly, with AVC, enabling high throughput has been realized using a technique called multi slice (multi slice). With multi slice, an image is divided into multiple regions as shown in A in FIG. 1, and CABAC encoding processing is independently performed on each. That is to say, as indicated by the dotted arrows in A in FIG. 1, arithmetic encoding is performed for each macroblock, in the order heading from a macroblock line at the upper side within the image toward a macroblock line at the lower side within the image. Thus, CABAC encoding can be performed in parallel for each region, thereby realized high-speed processing. These divided regions are called slices (slice).
The macroblocks are each encoded while referencing other adjacent macroblocks, as shown in B in FIG. 1 and C in FIG. 1.
However, dividing regions is a factor in reducing encoding efficiency. Firstly, each slice is independently encoded, so as shown in B in FIG. 1 and C in FIG. 1, mutual reference cannot be performed in the encoding of each region (slice). Accordingly, intra-screen prediction (intra-prediction) at the boundary portion cannot be used, and there has been the concern that encoding efficiency would deteriorate.
Secondly, with CABAC, the state of surrounding macroblocks is referenced to select a symbol occurrence probability table, as shown in C in FIG. 1, but since reference of adjacent macroblocks is impossible at the boundary portion, there has been the concern that selection of a suitable occurrence probability table would be difficult.
Thirdly, the symbol occurrence probability table used with CABAC converges on actual occurrence probability as encoding progresses and the encoding efficiency increases, but with the case of multi slice (multi slice), the symbol occurrence probability table is initialized each region (slice), so there has been the concern that the encoding efficiency at the start point of the slice (slice) would deteriorate.
There has been proposed an entropy slice (entropy slice) format as a technique for improving encoding efficiency while performing CABAC in parallel (e.g., see NPL 1). According to this format, just the CABAC processed portion is divided into regions called entropy slices (entropy slice) and executed in parallel, so intra-screen prediction could be used at the entropy slice (entropy slice) boundary as well. However, surrounding macroblock reference in CABAC processing has been unusable at the entropy slice (entropy slice) boundary.
As a further improvement technique, the ordered entropy slices (ordered entropy slices) format has been proposed (e.g., see NPL 2). According to this format, reference of adjacent macroblocks has been enabled at the boundary portion for CABAC processing as well.